/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.jm.financeiro.view;

import br.jm.financeiro.datamodel.LazyTipoBaixa;
import br.jm.financeiro.entity.TipoBaixa;
import br.jm.financeiro.sistema.eao.TipoBaixaEao;
import java.io.Serializable;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import org.primefaces.context.RequestContext;
import org.primefaces.model.LazyDataModel;

/**
 *
 * @author joao
 */
public class TipoBaixaBean implements Serializable {

    private static final long serialVersionUID = 1L;
    private TipoBaixa selectedTipoBaixa;
    private LazyDataModel<TipoBaixa> lazyModel;
    private TipoBaixaEao TipoBaixaJpa;
    private boolean salvar;

    public TipoBaixaBean() {
        selectedTipoBaixa = new TipoBaixa();
        TipoBaixaJpa = TipoBaixaEao.getInstance();

        lazyModel = new LazyTipoBaixa(TipoBaixaJpa);
    }

    public void inserir(ActionEvent actionEvent) {
        FacesMessage msg = null;
        RequestContext context = RequestContext.getCurrentInstance();
        boolean loggedIn = false;

        try {
            selectedTipoBaixa.setIdBaixa(null);
            TipoBaixaJpa.create(selectedTipoBaixa);

            msg = new FacesMessage(FacesMessage.SEVERITY_INFO, LoginBean.AtualizaLog("", "Tipo Baixa Inserida com Sucesso: ".concat(selectedTipoBaixa.getDscBaixa())),selectedTipoBaixa.getDscBaixa());
            loggedIn = true;
        } catch (Exception e) {
            msg = new FacesMessage(FacesMessage.SEVERITY_WARN, "Erro ao Inserir" + selectedTipoBaixa.getDscBaixa(),
                    e.getMessage());
        } finally {
            FacesContext.getCurrentInstance().addMessage(null, msg);
            context.addCallbackParam("loggedIn", loggedIn);
        }
    }

    public void alterar(ActionEvent actionEvent) {
        FacesMessage msg = null;
        RequestContext context = RequestContext.getCurrentInstance();
        boolean loggedIn = false;

        try {
            TipoBaixaJpa.edit(selectedTipoBaixa);
            msg = new FacesMessage(FacesMessage.SEVERITY_INFO, LoginBean.AtualizaLog("", "Tipo Baixa Alterada com Sucesso: ".concat(selectedTipoBaixa.getDscBaixa())),selectedTipoBaixa.getDscBaixa());
            loggedIn = true;
        } catch (Exception e) {
            msg = new FacesMessage(FacesMessage.SEVERITY_WARN, "Erro ao Alterar: " + selectedTipoBaixa.getDscBaixa(),
                    e.getMessage());
        } finally {
            FacesContext.getCurrentInstance().addMessage(null, msg);
            context.addCallbackParam("loggedIn", loggedIn);
        }
    }

    public void excluir(ActionEvent actionEvent) {
        FacesMessage msg = null;

        try {
            if (selectedTipoBaixa.getIdBaixa() == 0) {
                msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Registro não pode ser Excluido - Controle interno do Sistema",
                        selectedTipoBaixa.getDscBaixa());
            } else {
                TipoBaixaJpa.destroy(selectedTipoBaixa);

                msg = new FacesMessage(FacesMessage.SEVERITY_INFO, LoginBean.AtualizaLog("", "Tipo Baixa Excluida com Sucesso: ".concat(selectedTipoBaixa.getDscBaixa())),selectedTipoBaixa.getDscBaixa());
            }
        } catch (Exception e) {
            msg = new FacesMessage(FacesMessage.SEVERITY_WARN, "Erro ao Excluir: " + selectedTipoBaixa.getDscBaixa(), e.getMessage());
        } finally {
            FacesContext.getCurrentInstance().addMessage(null, msg);
        }
    }

    public LazyDataModel<TipoBaixa> getLazyModel() {
        return lazyModel;
    }

    public void setLazyModel(LazyDataModel<TipoBaixa> lazyModel) {
        this.lazyModel = lazyModel;
    }

    public TipoBaixa getSelectedTipoBaixa() {
        return selectedTipoBaixa;
    }

    public void setSelectedTipoBaixa(TipoBaixa selectedTipoBaixa) {
        this.selectedTipoBaixa = selectedTipoBaixa;
    }

    public boolean isSalvar() {
        return salvar;
    }

    public void setSalvar(boolean salvar) {
        this.salvar = salvar;
    }

    public void preparaInserir(ActionEvent actionEvent) {
        selectedTipoBaixa = new TipoBaixa();
        this.salvar = true;
    }
}
